﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;

using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Archivos.Pdf;
using EntGuayasSLA.BL.Listas;
using EntGuayasSLA.BL.Listas.Criterias;
using Ext.Net;

namespace EGuayas.Web.Licenciamiento.dma
{
    public partial class pgFirma : pgBase
    {
     
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                this.wucFirma.SetIfCallRefreshGridParent(true);
                this.BindDataFirma();
            }
        }
        #region Expander Grid
        [DirectMethod]
        public static string GetGrid(Dictionary<string, string> parameters)
        {
            // string id = parameters["id"];

            List<object> data = new List<object>();

            for (int i = 1; i <= 10; i++)
            {
                data.Add(new { ID = "P" + i, Name = "Product " + i, Desc = "Product " + i, Fech = "" + DateTime.Now.ToLongTimeString(), Version = "Product " + i });
            }

            GridPanel grid = new GridPanel
            {
                Height = 90,
                EnableColumnHide = false,
                Store = 
            { 
                new Store 
                { 
                    Model = {
                        new Model {
                            IDProperty = "ID",
                            Fields = 
                            {
                                new ModelField("ID"),
                                new ModelField("Name"),
                                new ModelField("Desc"),
                                new ModelField("Fech"),
                                new ModelField("Version")
                              
                            }
                        }
                    },
                    DataSource = data
                }
            },
                ColumnModel =
                {
                    Columns = { }
                },

            };


            Column addColumn1 = new Column();
            addColumn1.Text = "Nombre";
            addColumn1.DataIndex = "Nombre";
            addColumn1.Flex = 4;
            grid.ColumnModel.Columns.Add(addColumn1);

            Column addColumn2 = new Column();
            addColumn2.Text = "Descripción";
            addColumn2.DataIndex = "Desc";
            addColumn2.Flex = 4;
            grid.ColumnModel.Columns.Add(addColumn2);

            Column addColumn3 = new Column();
            addColumn3.Text = "Fecha";
            addColumn3.DataIndex = "Fech";
            addColumn3.Flex = 4;
            grid.ColumnModel.Columns.Add(addColumn3);

            Column addColumn4 = new Column();
            addColumn4.Text = "Versión";
            addColumn4.DataIndex = "Version";
            addColumn4.Flex = 4;
            grid.ColumnModel.Columns.Add(addColumn4);

            CommandColumn commandColumn = new CommandColumn();
            commandColumn.ID = "colAction" + System.Guid.NewGuid();
            commandColumn.Flex = 1;
            //commandColumn.Text = "Visualizar";
            commandColumn.DataIndex = "Id";
            commandColumn.Commands.Add(new GridCommand { Icon = Ext.Net.Icon.Zoom, CommandName = "View", Text = "Vizualizar" });
            commandColumn.Listeners.Command.Handler = "AppGlobalJs.showPdf('../../..',record.data.Ruta);";
            grid.ColumnModel.Columns.Add(commandColumn);
            return ComponentLoader.ToConfig(grid);

        }
        protected static void GrdSubDoc_Command(object sender, DirectEventArgs e)
        {
            /*
                string commandName = e.ExtraParams["command"];
                long Id = Convert.ToInt64(e.ExtraParams["Id"]);
            */
        }
        [DirectMethod]
        public static string GetSubDoc(Dictionary<string, string> parameters)
        {
            ArchivoSubArchivosCriteria criteria = ArchivoSubArchivosCriteria.NewArchivoSubArchivosCriteria();
            criteria.Id = parameters["id"];
            criteria.Tabla = parameters["tabla"];

            var data = ArchivoLista.GetArchivoLista(criteria);
           

            if (data.Count != 0)
            {
                /*
                    <ext:ModelField Name="FaseLicId" Type="String" />
                    <ext:ModelField Name="FechaCreacion" Type="Date" />
                    <ext:ModelField Name="FechaFirmado" Type="Date" />
                    <ext:ModelField Name="Firmado" Type="String" />
                    <ext:ModelField Name="Id" Type="String" />
                    <ext:ModelField Name="Descripcion" Type="String" />
                    <ext:ModelField Name="Nombre" Type="String" />
                    <ext:ModelField Name="PersonaId" Type="String" />
                    <ext:ModelField Name="PersonaNombres" Type="String" />
                    <ext:ModelField Name="Referencia" Type="String" />
                    <ext:ModelField Name="RequiereFirmar" Type="String" />
                    <ext:ModelField Name="Ruta" Type="String" />
                    <ext:ModelField Name="TipoDocumento" Type="String" />
                    <ext:ModelField Name="Version" Type="Int" />
           
                 */
                GridPanel grid = new GridPanel
                {
                    Height = 90,
                    EnableColumnHide = false,
                    Store = 
            { 
                new Store 
                { 
                    Model = {
                        new Model {
                            IDProperty = "Id",
                            Fields = 
                            {
                                new ModelField("Id"),
                                new ModelField("Nombre"),
                                new ModelField("Descripcion"),
                                new ModelField("FechaCreacion"),
                                new ModelField("Version"),
                                new ModelField("Ruta")
                            }
                        }
                    },
                    DataSource = data
                }
            },
                    ColumnModel =
                    {
                        Columns = { }
                    },

                };


                Column addColumn1 = new Column();
                addColumn1.Text = "Nombre";
                addColumn1.DataIndex = "Nombre";
                addColumn1.Flex = 4;
                grid.ColumnModel.Columns.Add(addColumn1);

                Column addColumn2 = new Column();
                addColumn2.Text = "Descripción";
                addColumn2.DataIndex = "Descripcion";
                addColumn2.Flex = 4;
                grid.ColumnModel.Columns.Add(addColumn2);

                Column addColumn3 = new Column();
                addColumn3.Text = "Fecha";
                addColumn3.DataIndex = "FechaCreacion";
                addColumn3.Flex = 4;
                grid.ColumnModel.Columns.Add(addColumn3);

                Column addColumn4 = new Column();
                addColumn4.Text = "Versión";
                addColumn4.DataIndex = "Version";
                addColumn4.Flex = 4;
                grid.ColumnModel.Columns.Add(addColumn4);

                CommandColumn commandColumn = new CommandColumn();
                commandColumn.ID = "colAction" + System.Guid.NewGuid();
                commandColumn.Flex = 1;
                //commandColumn.Text = "Visualizar";
                commandColumn.DataIndex = "Id";
                commandColumn.Commands.Add(new GridCommand { Icon = Ext.Net.Icon.Zoom, CommandName = "View", Text = "Vizualizar" });
                commandColumn.Listeners.Command.Handler = "AppGlobalJs.showPdf('../../..',record.data.Ruta);";


                //commandColumn.DirectEvents.Command.Event += GrdSubDoc_Command;
                //commandColumn.DirectEvents.Command.ExtraParams.Add(new Parameter { Name = "Id", Value = "record.data.Id" });
                //commandColumn.DirectEvents.Command.ExtraParams.Add(new Parameter { Name = "command", Value = "command" });
                grid.ColumnModel.Columns.Add(commandColumn);
                return ComponentLoader.ToConfig(grid);
            }
            return null;
        }
        #endregion Expander Grid

        protected void MyData_Refresh(object sender, StoreReadDataEventArgs e)
        {
            try
            {
                this.BindDataFirma();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        [DirectMethod(IDAlias = "pgDMFirma")]
        public void RefreshGridParent()
        {
            this.BindDataFirma();
            this.btnComentario.Disable();
            this.btnFirma.Disable();
        }
        private void BindDataFirma()
        {
            try
            {
                Store store = this.gpDocumentosLoad.GetStore();
                ArchivoFirmarCriteria filter = ArchivoFirmarCriteria.NewArchivoFirmarCriteria();
                filter.Firmado = Valores.Codigo_CHAR_No;
                filter.RequiereFirma = Valores.Codigo_CHAR_Si;
              
                store.DataSource = ArchivoLista.GetArchivoLista(filter);
                store.DataBind();
                //
                store = this.gpFirmados.GetStore();
                filter = ArchivoFirmarCriteria.NewArchivoFirmarCriteria();
                filter.Firmado = Valores.Codigo_CHAR_Si;
                filter.RequiereFirma = Valores.Codigo_CHAR_Si;
              
                store.DataSource =ArchivoLista.GetArchivoLista(filter);
                store.DataBind();
                

            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
       
       
    
      
     
       [DirectMethod]     
       public void ViewComentario( string id)
       {
           try
           {
               //TODO: Buscar por Id cometario referente a archivo
               X.Msg.Show(new MessageBoxConfig
               {
                   Buttons = MessageBox.Button.OK,
                   Icon = MessageBox.Icon.INFO,
                   Title = "Estado",
                   Message = string.Format("{0}", "Comentario mostrar " + id)
               });
           }
           catch (Exception ex)
           {
               RegistrarLog(ex);
           }

       }
     
       protected void btnComentario_Click(object sender, DirectEventArgs e)
       {
            try
            {
                Archivo objArch = Archivo.GetEditableRoot(Guid.Parse(e.ExtraParams["hdDocViewId"]), Valores.Modulo_Archivo_Licenciamiento);
                objArch.SubirNuevo = "S";
                objArch.Save();

                RevisionFase objRevFase = RevisionFase.NewEditableRoot();
                objRevFase.Id = System.Guid.NewGuid();

                objRevFase.PersonaId = objArch.PersonaId;
                objRevFase.RevisorId = GetSessionUsuario.PersonaId;
                objRevFase.Fecha = DateTime.Now;
                objRevFase.Aprobado = "N";
                
                ArchivoRevisar objArchRev = new ArchivoRevisar();
                objArchRev.Id = System.Guid.NewGuid();
                objArchRev.RevisionFaseId = objRevFase.Id.ToString();

                objArchRev.ArchivoId =Guid.Parse( e.ExtraParams["hdDocViewId"]);
                objArchRev.Comentario = e.ExtraParams["hddTxtComentario"];
                objRevFase.ArchivoRevicion.Add(objArchRev);
                objRevFase.Save();

                //Deshabilitar botones
                btnFirma.Disable();
                btnComentario.Disable();
                gpDocumentosLoad.GetStore().Reload();
                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.INFO,
                    Title = "Mensaje",
                    Message = string.Format("{0}", "Comentario agregado")
                });

                /*
                var id = Guid.Parse(e.ExtraParams["hdDocViewId"]);
                Archivo objArch = Archivo.GetEditableRoot(id);
                objArch.SubirNuevo = "S";
                
                objArch.Save();
                Comentario objComentario = Comentario.NewEditableRoot();
                objComentario.Id           = System.Guid.NewGuid();
                objComentario.ExpedienteId = e.ExtraParams["hdExpedienteId"];
                objComentario.PersonaId    = UsuarioId;
                objComentario.Visualizar   = "S";
                objComentario.Mensaje      = e.ExtraParams["hddTxtComentario"];
                objComentario.Save();
                //Deshabilitar botones
                btnFirma.Disable();
                btnWinComentariOk.Disable();
                gpDocumentosLoad.GetStore().Reload();
                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.INFO,
                    Title = "Mensaje",
                    Message = string.Format("{0}", "Comentario agregado")
                });
                */
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }


        }
      
        

    }
}